package org.example;

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param x int整型 制作莫比乌斯环的带子长度
     * @param n int整型 A每次移动的距离
     * @param m int整型 B每次移动的距离
     * @param time int整型 第几次相遇
     * @return int整型
     */
    public static int getMeetDistance (int x, int n, int m, int time) {
        //(n + m) * 一个数 = x * 一个奇数

        //其实是从一个点从不同的面向距离最远的地方跑
        //距离各自起点的距离
        //初始的出发点,可以看成相距离x的不同平面,也就是纸的两端
        int disX = 0;
        int disY = 0;
        boolean fx = true;//正反面
        boolean fy = false;//正反面
        int t = 0;
        int c = 0;
        while (true) {
            c++;
            disX = disX + n;
            while (disX >= x) {
                disX = disX - x;
                fx = !fx;
            }
            disY = disY + m;
            while (disY > x) {
                disY = disY - x;
                fy = !fy;
            }
            if (((disX + disY) == x) && fx != fy) {
                t++;
            }
            if (disX == 0 && disY == 0 && fx && !fy && t == 0) {
                return -1;
            }
            if (t == time) {
                return Math.min(disX, disY);
            }
        }
    }

    public static void main(String[] args) {
        System.out.println(getMeetDistance(15, 2, 3, 4));
    }
}